from sklearn.decomposition import LatentDirichletAllocation
from sklearn.feature_extraction.text import CountVectorizer
import Question2
import os
'''
    这个模块包含一个函数。该函数需要输入文档列表以得到
    词频矩阵，用户指定话题数量，该模块据此建立主题模型。
    模块将在分析后打印主题词语、每篇文档的主题概率分布。
'''
def topic_analyze(file_name_list,topic_num):
    corpus=[]
    for i in file_name_list:
        corpus.append(Question2.sep_words_by_path(i))
    vectorizer = CountVectorizer()
    X = vectorizer.fit_transform(corpus)
    lda=LatentDirichletAllocation(n_components=topic_num)
    lda.fit(X)
    feature_name=vectorizer.get_feature_names_out()
    for i,topic in enumerate(lda.components_):
        print(f'topic {i}:')
        topic_word=[feature_name[_] for _ in topic.argsort()[::-1] ]
        print(topic_word)
    for i in range(len(corpus)):
        print(f'Document {i}:')
        print(lda.transform(X[i]))

    return


